{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "代码推到数据集划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import make_blobs\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[-1.74376926,  9.35065733],\n",
       "        [-6.72559933, -4.66615528],\n",
       "        [-1.673015  ,  6.25762391],\n",
       "        [-2.31127379,  8.76575463],\n",
       "        [-5.46771155, -5.87621284],\n",
       "        [-5.05638917, -5.41593829],\n",
       "        [ 9.96104762, -4.19815414],\n",
       "        [-5.68441534, -3.48827348],\n",
       "        [ 6.6794415 , -3.25621688],\n",
       "        [-1.25663503,  8.9349257 ],\n",
       "        [ 9.62872058, -4.22748463],\n",
       "        [-0.31247758,  8.75813811],\n",
       "        [-2.33372212,  8.28918188],\n",
       "        [ 8.06433796, -1.82955661],\n",
       "        [-0.69442143,  8.06370055],\n",
       "        [-0.08812255,  8.18799124],\n",
       "        [-0.13910563,  8.38869337],\n",
       "        [-2.80814994,  8.27827245],\n",
       "        [ 9.77850391, -4.41140389],\n",
       "        [-6.78429511, -5.20930075],\n",
       "        [-6.80927562, -4.82857176],\n",
       "        [-5.20306559, -3.45506741],\n",
       "        [ 8.5139793 , -2.17203507],\n",
       "        [ 7.7097032 , -5.52080672],\n",
       "        [-5.642809  , -5.51568794],\n",
       "        [ 7.82126672, -4.70787832],\n",
       "        [-4.11171858, -5.29641267],\n",
       "        [10.41418642, -4.8051516 ],\n",
       "        [ 6.65062381, -3.62410428],\n",
       "        [-0.59876353,  7.51817073],\n",
       "        [-4.78817342, -4.78540689],\n",
       "        [-5.93656453, -5.25509776],\n",
       "        [ 7.3308667 , -3.62356976],\n",
       "        [ 6.86603996, -3.60169341],\n",
       "        [-6.11306195, -4.53169567],\n",
       "        [-1.94508007,  8.02881332],\n",
       "        [ 8.92614717, -2.4995499 ],\n",
       "        [-0.01197083,  8.20549661],\n",
       "        [10.40987906, -3.00477479],\n",
       "        [-4.79048486, -3.8058963 ],\n",
       "        [ 8.39778   , -4.87990678],\n",
       "        [-5.37693195, -4.10649163],\n",
       "        [ 8.44171111, -2.93087519],\n",
       "        [ 9.70579801, -2.04903404],\n",
       "        [-6.09334802, -3.40811798],\n",
       "        [ 8.42659346, -3.0721474 ],\n",
       "        [-5.3415004 , -6.02480683],\n",
       "        [-0.72982916,  8.80437015],\n",
       "        [ 9.4301304 , -2.9295166 ],\n",
       "        [-6.01873648, -3.84428854],\n",
       "        [ 9.05275281, -3.42384714],\n",
       "        [-0.16944708,  7.94895401],\n",
       "        [-5.65075527, -4.28377444],\n",
       "        [-4.00785395, -3.76279132],\n",
       "        [-6.4080963 , -3.66260816],\n",
       "        [-6.24788009, -3.20707261],\n",
       "        [-2.51317516,  8.05867094],\n",
       "        [ 8.36515176, -1.96308377],\n",
       "        [-6.80679621, -4.51090067],\n",
       "        [10.16784918, -3.73425507],\n",
       "        [-0.1885556 ,  8.76566128],\n",
       "        [-5.40777095, -6.82380243],\n",
       "        [-0.02601973,  8.22796249],\n",
       "        [-2.63910225,  9.32167541],\n",
       "        [-1.65585533,  7.65837802],\n",
       "        [10.8920162 , -3.77368715],\n",
       "        [ 0.57742243,  8.98692972],\n",
       "        [-1.75927419,  6.8617331 ],\n",
       "        [ 8.9022113 , -2.97319388],\n",
       "        [-5.63134164, -2.94930348],\n",
       "        [ 9.2778731 , -3.70603287],\n",
       "        [-6.52192303, -5.36120165],\n",
       "        [-0.12702717,  8.79260621],\n",
       "        [ 9.12610038, -3.74180376],\n",
       "        [ 8.46393717, -4.43275391],\n",
       "        [-2.02182018,  8.25029715],\n",
       "        [ 9.97639806, -5.58987917],\n",
       "        [-6.02563412, -4.67946262],\n",
       "        [ 8.49002388, -1.77784172],\n",
       "        [-1.10690884,  9.49311107],\n",
       "        [-0.54177247,  8.3895544 ],\n",
       "        [-6.7755244 , -4.45165911],\n",
       "        [ 0.67299612,  9.83025042],\n",
       "        [ 0.70746108,  7.48398801],\n",
       "        [-1.37735637,  7.36742965],\n",
       "        [-5.80912248, -3.00216715],\n",
       "        [-6.51194267, -4.04950862],\n",
       "        [ 9.21901235, -4.07155043],\n",
       "        [-0.52733454,  7.6625772 ],\n",
       "        [-5.99104938, -4.97728071],\n",
       "        [ 0.45101006,  8.24881293],\n",
       "        [-2.16996468, 10.03575515],\n",
       "        [-3.89043797, -5.99047652],\n",
       "        [ 9.38039348, -2.62754178],\n",
       "        [-2.10776491,  6.53023766],\n",
       "        [-5.75505976, -6.52296439],\n",
       "        [ 9.22652218, -3.49162464],\n",
       "        [-0.88058217,  8.36564632],\n",
       "        [-3.71822056, -4.52679853],\n",
       "        [ 9.31095718, -3.20894064]]),\n",
       " array([0, 2, 0, 0, 2, 2, 1, 2, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 2, 2, 2,\n",
       "        1, 1, 2, 1, 2, 1, 1, 0, 2, 2, 1, 1, 2, 0, 1, 0, 1, 2, 1, 2, 1, 1,\n",
       "        2, 1, 2, 0, 1, 2, 1, 0, 2, 2, 2, 2, 0, 1, 2, 1, 0, 2, 0, 0, 0, 1,\n",
       "        0, 0, 1, 2, 1, 2, 0, 1, 1, 0, 1, 2, 1, 0, 0, 2, 0, 0, 0, 2, 2, 1,\n",
       "        0, 2, 0, 0, 2, 1, 0, 2, 1, 0, 2, 1]))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eigenvalueArray,targetArray=make_blobs()  #获取数据集内闪点数据集\n",
    "eigenvalueArray,targetArray"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABC7UlEQVR4nO3deXxU1f3/8ddkG5aGsGfBkERENq0iIEtFQJRNEZUq2KpQFUXBCtSviktBf1bEulBFRRRTESlYWURFIbQEq4AFjMguyhYhKYKQAEpCkvv742Qbsk4ydyY3eT8fj/vI3Dvn3vu5DGQ+nNVlWZaFiIiIiEMEBToAEREREW8oeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUUICHYCv5eXlcejQIcLDw3G5XIEOR0RERCrBsixOnDhBTEwMQUHl163UuuTl0KFDxMbGBjoMERERqYLU1FTOOeeccsvUuuQlPDwcMA/fqFGjAEcjIiIilZGZmUlsbGzh93h5al3yUtBU1KhRIyUvIiIiDlOZLh/qsCsiIiKOouRFREREHEXJi4iIiDiKkhcRERFxFCUvIiIi4ihKXkRERMRRlLyIiIiIoyh5EREREUdR8iIiIiKOouRFREREHKXKyctnn33G0KFDiYmJweVysXTpUo/3Lcti6tSpxMTEUL9+ffr27cu2bdsqvO6iRYvo2LEjbrebjh07smTJkqqGKCIiIrVQlZOXU6dOcdFFFzFz5sxS33/22Wd54YUXmDlzJhs2bCAqKoqrrrqKEydOlHnNdevWMWLECG699VY2b97Mrbfeyk033cSXX35Z1TBFypeaCr/7HVx5Jbz/fqCjERGRSnBZlmVV+yIuF0uWLOG6664DTK1LTEwMEyZM4KGHHgIgKyuLyMhIpk+fzt13313qdUaMGEFmZiaffPJJ4bFBgwbRpEkT/vGPf1QqlszMTCIiIsjIyNDCjFKxCy6AnTshNxdcLli/Hi69NNBRiYjUOd58f9vS52Xv3r2kp6czYMCAwmNut5s+ffqwdu3aMs9bt26dxzkAAwcOLPecrKwsMjMzPTaRSsnKgm3bTOICYFmwYUNgYxIRkQrZkrykp6cDEBkZ6XE8MjKy8L2yzvP2nGnTphEREVG4xcbGViNyqVPcbrjkEggONrUuQUHQq1egoxIRkQrYOtrI5XJ57FuWVeJYdc+ZPHkyGRkZhVtqamrVA5a65+OP4fbbYdgw+PBD6Nw50BHVPO++C7//PTz9NGRnBzoaERFC7LhoVFQUYGpSoqOjC48fPny4RM3K2eedXctS0Tlutxu3213NiKXOioqC2bMDHUXN9d57cMstplbKsiA9HV56KdBRiUgdZ0vNS0JCAlFRUSQlJRUey87OZs2aNfQqp1q+Z8+eHucArFy5stxzRMRGSUkQEgJ5eSZ5+fTTQEckIlL1mpeTJ0/y3XffFe7v3buXr7/+mqZNm9K6dWsmTJjA008/Tdu2bWnbti1PP/00DRo04He/+13hObfddhutWrVi2rRpANx///1cfvnlTJ8+nWHDhvHBBx+watUqPv/882o8oohUWefO8Oab5nVwMHTpEth4RESoRvKyceNG+vXrV7g/adIkAEaNGsXf//53HnzwQX755Rfuvfdejh07Rvfu3Vm5ciXh4eGF5xw4cICgoKLKn169erFgwQIee+wxHn/8cdq0acPChQvp3r17VcMUkeoYOxYOH4YPPoCLLoIZMwIdkYiIb+Z5qUk0z4uIiIjzBHyeFxERERG7KHkR8ZetW+HXv4bGjeH++00nWBER8ZqSFxF/GTkStm+HjAwz3PjddwMdkYiIIyl5EfHGyZMm+aiK/fuLliIIDoZ9+3wWlohIXaLkRWqXnBx44w2YOtWsW+RLL7wAERGm2ef//s/783//e/MzONhs+QuZioiIdzTaSGqX0aPh7bdNchAaCikp0L599a+blgatWpmJ2gps2mTWRqqs3Fz4+99NDczw4WbosYiIAN59f9uyPIBIwMyfb37m5ppEY9ky3yQvJ096Ji4A3q5gHhwMd9xR/VhEROo4NRtJ7dK6tUkSwIzmiY/3zXXPOw+uuaZo/9JLtQK1iEiAqOZFapf33zcLCR48CGPGwI03+ua6LhcsWQIrVpiVlQcPhrAw31xbRES8ouRFapeLLzbzqdghJASuvtqea4uISKWp2UhEREQcRcmLiJS0dStcfrnp7DxrVqCjERHxoORFxC6nTsFdd8GFF8LEiaavjBNYlunTs3Yt7NoF99wDn38e6KhERAqpz4uIXR56CObMMaOetm83k9tNmRLoqCr2yy/www+ex7Zvh8suC0w8IiJnUc2LiF2++qpo8UXLgs2bK3deXh588w3s2WNfbOVp0AB694agIDPs3O2Gfv0CE4uISCmUvEjds2UL/O1vsHq1vfcZPNj8DA42yctVV1V8Tk4ODBliZt9t0waeeqr88ocOwaefmqHh334LkyZBZCTUrw/jx1d95eoPP4RHHzXNXp9/Dm3bVu06IiI20PIAUrd8/rmpRcjJMfuvvQZjx9pzr7w8mDkTNmyAPn3M7LouV/nnLF/uORzb5YKffjJNTmdbvx6uuMI08xTMOXN2v5qFC+Gmm6r1GCIi/qDlAUTKkpjoOc3/K6/Yl7wEBcEf/+jdOWfXlFhWyWUJCvz1r5CVZV6X1hk4KAhSU727v4iIA6jZSOqWqKii18HBEBMTuFhKM2CAqaUp8Mgj0KRJ6WXDwopqckqr0alfXytXi0itpORF6pYHHyxKDs47zzTr1CRhYbBqlWkS2rYN/vKXsstOmQLNmpnXTZsWdapt1gzuvx++/tr0mxERqWXU50XqptzcogUcneyXX2DfPoiLM6OEcnLMMgYiIg6jPi8iFakNiQuYpqEOHYr2lbiISB2gZiMRERFxFCUvIoF26pRZP2jmTDh2rOT7Z87AnXdCo0ZwySWwe3fZ13rzTYiOhvh4M+xaRKQWUp8XkUDKzYWePWHjRrPftq3paFu/flGZmTPNkGvLMs1d3brBunUlr7V9O1xwgSnncpmZcf/3P5P0iIjUcN58f6vmRZxt3TozHHjECNixo+Ly771naiYiI+Htt0svs39/ybV97LJzp5nErmA+l2+/hS+/LBlPUP4/1dxc2Lu39Gvt21c0J4xlwenTcPiwd/GkpXl/joiInyl5Eec6dAj69zdT2S9aZIZA//JL2eXT0+H3vzc/Dx+G22/3TAQsy0xYFx8PsbHw8MO2PwLNm5fsPFx8LhqA3/7W1KQUlBs9uvRr9eplzg0ONslOQgL84Q9mmYKyEp4ClmVqd2JiTGL35JNVehwREX9Q8iLO9c03JlnJyzM1Ej/+aGofypKWVrQsAJjzitewfP01vP560f706fYvjhgZCX//u2naadAAXnoJ2rf3LNO9u6lhevRReOcdePrp0q/VuLFpfhozxrzeu9csh/Dpp9Cxo+lbU5aUFHj55aL9KVNMjY+ISA2kcZXiXL/+tekbkpVlaiaaNjW1JmXp1Ml8ie/cafbj46FLl6L3C6baL660afd97ZZbTI0QlL32UdeuZqtIq1bwySdmPaTiTp+Gf/6z7Fqb0mqsTp+u+H4iIgGgmhdxrpgYSEoyCxlefz0kJ3t2dAXTD2bhQlODEhZmaiKeecbUXqxfb2o7CnTrVrQSNMDIkdCunV8eBZfLM3FJTTW1MO+9593K0Hl5Za9n1LBh2ed17140Qy/A8OFw/vmVv6+IiB9ptJHUXh9+aJKa3Fwz8ubf/zb9QsqTmwtffAGbN5vzGzSAp54yo3j8JTUVLroIjh83fVHuusuzOasiI0eapKf4P+3f/MY8f8Hq06U5cwZWrzYT3fXtW9RJWETED7z5/lbyIrXX5ZebmhbLMl/EN90E//hHxeft329qHc6cMec1bQoHDkC9evbHDKbvyf33FyUfQUGm+aoyswIfPgxHj5pEJT3ddGiOijI1SGU1SYmI1ABaHkAETCfYoCBTm+JyQXh45c7bsqWor0tBR+DUVDMHiz9ERRUlLi6XGZFUmVqQ116D8eNN09E118CSJVouQERqJdULS+31179Cy5bmdUIC/PnPlTuvc2fTdyYoyNR2xMRA69b2xXm24cPh7rvNvVu0ME1AFdWanD5thjoX9I/56CPT7CUiUgvpv2VSe3XoYJp7Dh82Q5Iruxhjq1am78fzz5umoj//2fSZ8ZegILNcwKuvVr7fSW6u2YorbfSUiEgtoD4vIrXF5MlmJBWYDr9ffFH+CCMRkRpEfV5E6qJp00yT07Fj0Lu3/zoYi4j4mZIXkar44gszm2/BaB67nToF8+ebGYJvvtnMoFuaykxkJyLicEpeRLz117/Cgw+a102awKZNpkOwXXJzTZJUsGDjSy/BV1+VnJBPRKSOsHW0UXx8PC6Xq8Q2bty4UssnJyeXWn5nwXTuIjVBQb8SgMxMs96QnXbs8FxpeufOkitPi4jUIbbWvGzYsIHcYiMgtm7dylVXXcWNN95Y7nm7du3y6KzTokUL22IU8VrjxqZfiWWZockREfbd65dfYMECM1S6eN96fzRViYjUULbWvLRo0YKoqKjC7aOPPqJNmzb06dOn3PNatmzpcV5wZYe4ivjDnDlmAjyAK64w0/fb5aabPFeRdrthxoySK0/bKSPDdASOjIQbb4QTJ/x3bxGRUvhtkrrs7GzmzZvH7bffjquCCbc6d+5MdHQ0/fv3Z/Xq1eWWzcrKIjMz02MTsVXfvmbW3aNHzcKQdvU9yc2Fjz82NS4FtS7TppmlA/zpkUfggw/MfDlLlsDjj/v3/iIiZ/Fb8rJ06VKOHz/O6NGjyywTHR3N7NmzWbRoEYsXL6Zdu3b079+fzz77rMxzpk2bRkREROEWGxtrQ/QiZwkNNWsenZ2I5+XBG2+YBGPFiurdIzjYdAQuXvPozxqXAt9+WzQBXm4u7Nrl/xhERIrx2yR1AwcOJCwsjA+9nLJ86NChuFwuli1bVur7WVlZZBWbSTQzM5PY2FhNUieB8dhj8Je/mDWFcnLMNP1XX131623bBrffDmlpMG4cPPSQ72KtrNdfh7Fji57pzTfhjjv8H4eI1Go1bpK6/fv3s2rVKhYvXuz1uT169GDevHllvu92u3H7c+p2kfK89575mZNjakyWLq1e8tKpU+BHFt11l6llWrcOLrsMbrghsPGISJ3nl+QlMTGRli1bcnUVfomnpKQQHR1tQ1QiNmjfHvbsMc0reXnQrl2gI6o+l8t01K1glKCIiL/Ynrzk5eWRmJjIqFGjCAnxvN3kyZM5ePAgc+fOBWDGjBnEx8fTqVOnwg6+ixYtYtGiRXaHKeIbs2fDH/4A33wD117r/861IiJ1gO3Jy6pVqzhw4AC33357iffS0tI4cOBA4X52djYPPPAABw8epH79+nTq1ImPP/6YIUOG2B2miG9ERcEnnwQ6ChGRWk2rSouIiEjAefP97beh0iIiIiK+oORFREREHEXJi4iIiDiKX4ZKi9QKX30Fy5fD+eebYcMVLHMhIiL2UPIiUhnr10Pv3mbulrw8M/PtE08EOioRkTpJzUYilVEwc25envk5Z07gYhERqeOUvIhURmxs0eKEwcEQFxfYeERE6jAlLyKVMW4c3Hwz1Ktn1htKTAx0RCIidZb6vIhURlgYvPtuoKMQERFU8yIiIiIOo+RFxLJg2jQ45xzo1g22bg10RCIiUg41G4l88gk88oh5nZ4Ow4bB998HNiYRESmTal5Evv22aMK53FzYt69oSLSIiNQ4Sl5EBg40HXKDg00SM3QoBOmfhohITaVmI5EOHWDdOpg3D6KiYPz4QEckIiLlUPIiAtC5s9kqIz3dzLjbuLGZ+yU01NbQRETEk5IXEW8cOWKSnP/9z4xSWroUFi8OdFQiInWKGvZFvLFihal5sSyzv2QJHDsW2JhEROoY1byIeCM6uui1ywUNGkDDhoGLR0SkDlLNi4g3+vWDyZNNP5cmTWDhQjNSSURE/MZlWQX137VDZmYmERERZGRk0KhRo0CHI7VVXp6peSmYH0ZERKrFm+9vNRuJVIXmgRERCRj9BhYRERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHsTV5mTp1Ki6Xy2OLiooq95w1a9bQpUsX6tWrx7nnnsusWbPsDFFEREQcJsTuG3Tq1IlVq1YV7gcHB5dZdu/evQwZMoQxY8Ywb948vvjiC+69915atGjB8OHD7Q5VREREHMD25CUkJKTC2pYCs2bNonXr1syYMQOADh06sHHjRp577jklLyIiIgL4oc/L7t27iYmJISEhgZEjR7Jnz54yy65bt44BAwZ4HBs4cCAbN27kzJkzpZ6TlZVFZmamxyYiIiK1l63JS/fu3Zk7dy4rVqzgjTfeID09nV69enH06NFSy6enpxMZGelxLDIykpycHI4cOVLqOdOmTSMiIqJwi42N9flziIiISM1ha/IyePBghg8fzoUXXsiVV17Jxx9/DMDbb79d5jkul8tj37KsUo8XmDx5MhkZGYVbamqqj6IXERGRmsj2Pi/FNWzYkAsvvJDdu3eX+n5UVBTp6ekexw4fPkxISAjNmjUr9Ry3243b7fZ5rCIiIlIz+XWel6ysLHbs2EF0dHSp7/fs2ZOkpCSPYytXrqRr166Ehob6I0QRERGp4WxNXh544AHWrFnD3r17+fLLL/ntb39LZmYmo0aNAkyTz2233VZYfuzYsezfv59JkyaxY8cO3nrrLebMmcMDDzxgZ5giIiLiILY2G/3www/cfPPNHDlyhBYtWtCjRw/Wr19PXFwcAGlpaRw4cKCwfEJCAsuXL2fixIm88sorxMTE8NJLL2mYtIiIiBRyWQU9YmuJzMxMIiIiyMjIoFGjRoEOR0RERCrBm+9vrW0kIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUWxNXqZNm0a3bt0IDw+nZcuWXHfddezatavcc5KTk3G5XCW2nTt32hmqiIiIOIStycuaNWsYN24c69evJykpiZycHAYMGMCpU6cqPHfXrl2kpaUVbm3btrUzVBEREXGIEDsv/umnn3rsJyYm0rJlSzZt2sTll19e7rktW7akcePGNkYnIiIiTuTXPi8ZGRkANG3atMKynTt3Jjo6mv79+7N69Wq7QxMRERGHsLXmpTjLspg0aRKXXXYZF1xwQZnloqOjmT17Nl26dCErK4t33nmH/v37k5ycXGptTVZWFllZWYX7mZmZtsQvIiIiNYPLsizLHzcaN24cH3/8MZ9//jnnnHOOV+cOHToUl8vFsmXLSrw3depUnnjiiRLHMzIyaNSoUZXjFREREf/JzMwkIiKiUt/ffmk2uu+++1i2bBmrV6/2OnEB6NGjB7t37y71vcmTJ5ORkVG4paamVjdcERERqcFsbTayLIv77ruPJUuWkJycTEJCQpWuk5KSQnR0dKnvud1u3G53dcIUERERB7E1eRk3bhzz58/ngw8+IDw8nPT0dAAiIiKoX78+YGpODh48yNy5cwGYMWMG8fHxdOrUiezsbObNm8eiRYtYtGiRnaGKiIiIQ9iavLz22msA9O3b1+N4YmIio0ePBiAtLY0DBw4Uvpednc0DDzzAwYMHqV+/Pp06deLjjz9myJAhdoYqIiIiDuG3Drv+4k2HHxEREakZalyHXRERERFfUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUZS8iIiIiKMoeRERERFHUfIiIiIijqLkRURERBxFyYuIiIg4ipIXERERcRQlLyIiIuIoSl5ERETEUfySvLz66qskJCRQr149unTpwn/+859yy69Zs4YuXbpQr149zj33XGbNmuWPMEVERMQBbE9eFi5cyIQJE3j00UdJSUmhd+/eDB48mAMHDpRafu/evQwZMoTevXuTkpLCI488wh//+EcWLVpkd6giIiLiAC7Lsiw7b9C9e3cuueQSXnvttcJjHTp04LrrrmPatGklyj/00EMsW7aMHTt2FB4bO3YsmzdvZt26dRXeLzMzk4iICDIyMmjUqJFvHkJERERs5c33t601L9nZ2WzatIkBAwZ4HB8wYABr164t9Zx169aVKD9w4EA2btzImTNnSpTPysoiMzPTYxMREZHay9bk5ciRI+Tm5hIZGelxPDIykvT09FLPSU9PL7V8Tk4OR44cKVF+2rRpREREFG6xsbG+ewARERGpcfzSYdflcnnsW5ZV4lhF5Us7DjB58mQyMjIKt9TUVB9ELCIiIjVViJ0Xb968OcHBwSVqWQ4fPlyidqVAVFRUqeVDQkJo1qxZifJutxu32+27oEVERKRGs7XmJSwsjC5dupCUlORxPCkpiV69epV6Ts+ePUuUX7lyJV27diU0NNS2WEVERMQZbG82mjRpEm+++SZvvfUWO3bsYOLEiRw4cICxY8cCptnntttuKyw/duxY9u/fz6RJk9ixYwdvvfUWc+bM4YEHHrA7VBEREXEAW5uNAEaMGMHRo0d58sknSUtL44ILLmD58uXExcUBkJaW5jHnS0JCAsuXL2fixIm88sorxMTE8NJLLzF8+HC7QxUREREHsH2eF3/TPC8iIiLOU2PmeRERERHxNSUvIiIi4ihKXkRERMRRlLyIiIiIoyh5EREREUdR8iIiIiKOouRFREREHEXJi4iIiDiKkhcRERFxFCUvIiIi4ihKXkRERMRRlLyIiIiIoyh5EREREUdR8iIiIiKOouRFREREHEXJi4iIiDiKkhcRERFxFCUvIiIi4ihKXkRERMRRlLyIiIiIoyh5EREREUdR8iIiIiKOouRFREREHEXJi4iIiDiKkhcRERFxFCUvIiIi4ihKXkRERKridAZ8+xGkpQQ6kjonJNABiIiI1Bi5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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# eigenvalueArray[:, 0] #取所有行的第1列\n",
    "# eigenvalueArray[:, 1] #取所有行的第2列\n",
    "plt.scatter(eigenvalueArray[:, 0], eigenvalueArray[:, 1], c=targetArray, s=5, cmap='autumn')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "划分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([34, 35, 46, 36, 63, 78, 82, 60, 56, 61, 18, 84, 15, 70,  5, 88, 68,\n",
       "       47, 98, 19, 29, 49,  1,  2, 54, 10, 20, 24, 95,  6, 42, 44, 86, 77,\n",
       "        3, 90, 76, 59,  9, 72, 39, 55, 94, 23,  4, 75, 87, 13, 57, 83, 99,\n",
       "       52, 93, 85, 45, 28, 58, 74,  8,  7, 26, 71, 65, 69, 40, 43, 33, 21,\n",
       "       11, 37, 92, 97, 27, 62, 67, 66, 22, 38, 64, 73, 31,  0, 16, 91, 89,\n",
       "       30, 12, 41, 80, 81, 32, 96, 48, 25, 53, 50, 17, 79, 51, 14],\n",
       "      dtype=int32)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index=np.arange(20)\n",
    "np.random.shuffle(index)\n",
    "index\n",
    "np.random.permutation(20)\n",
    "np.random.seed(10)\n",
    "np.random.permutation(len(eigenvalueArray))\n",
    "shuffle=np.random.permutation(len(eigenvalueArray))\n",
    "shuffle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-3.89043797, -5.99047652],\n",
       "       [-0.88058217,  8.36564632],\n",
       "       [10.41418642, -4.8051516 ],\n",
       "       [-0.02601973,  8.22796249],\n",
       "       [-1.75927419,  6.8617331 ],\n",
       "       [ 0.57742243,  8.98692972],\n",
       "       [ 8.5139793 , -2.17203507],\n",
       "       [10.40987906, -3.00477479],\n",
       "       [-1.65585533,  7.65837802],\n",
       "       [ 9.12610038, -3.74180376],\n",
       "       [-5.93656453, -5.25509776],\n",
       "       [-1.74376926,  9.35065733],\n",
       "       [-0.13910563,  8.38869337],\n",
       "       [-2.16996468, 10.03575515],\n",
       "       [-5.99104938, -4.97728071],\n",
       "       [-4.78817342, -4.78540689],\n",
       "       [-2.33372212,  8.28918188],\n",
       "       [-5.37693195, -4.10649163],\n",
       "       [-0.54177247,  8.3895544 ],\n",
       "       [-6.7755244 , -4.45165911],\n",
       "       [ 7.3308667 , -3.62356976],\n",
       "       [ 9.22652218, -3.49162464],\n",
       "       [ 9.4301304 , -2.9295166 ],\n",
       "       [ 7.82126672, -4.70787832],\n",
       "       [-4.00785395, -3.76279132],\n",
       "       [ 9.05275281, -3.42384714],\n",
       "       [-2.80814994,  8.27827245],\n",
       "       [-1.10690884,  9.49311107],\n",
       "       [-0.16944708,  7.94895401],\n",
       "       [-0.69442143,  8.06370055]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainSize=0.7\n",
    "trainIndex=shuffle[:int(trainSize*len(shuffle))]\n",
    "testIndex=shuffle[int(trainSize*len(shuffle)):]\n",
    "trainIndex.shape,testIndex.shape\n",
    "\n",
    "eigenvalueArray[trainIndex] #取出训练集数据\n",
    "eigenvalueArray[testIndex] #取出测试集数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用sklearn库中的KNeighborsClassifier类实现KNN算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[-6.24788009, -3.20707261],\n",
       "        [-0.52733454,  7.6625772 ],\n",
       "        [-4.11171858, -5.29641267],\n",
       "        [ 8.44171111, -2.93087519],\n",
       "        [-5.63134164, -2.94930348],\n",
       "        [-0.08812255,  8.18799124],\n",
       "        [ 8.39778   , -4.87990678],\n",
       "        [ 9.22652218, -3.49162464],\n",
       "        [-1.25663503,  8.9349257 ],\n",
       "        [-0.12702717,  8.79260621],\n",
       "        [-0.31247758,  8.75813811],\n",
       "        [-0.72982916,  8.80437015],\n",
       "        [-5.80912248, -3.00216715],\n",
       "        [ 6.65062381, -3.62410428],\n",
       "        [ 9.38039348, -2.62754178],\n",
       "        [-5.05638917, -5.41593829],\n",
       "        [ 0.57742243,  8.98692972],\n",
       "        [10.8920162 , -3.77368715],\n",
       "        [-1.94508007,  8.02881332],\n",
       "        [-0.13910563,  8.38869337],\n",
       "        [-6.01873648, -3.84428854],\n",
       "        [-6.11306195, -4.53169567],\n",
       "        [-5.68441534, -3.48827348],\n",
       "        [-5.75505976, -6.52296439],\n",
       "        [10.41418642, -4.8051516 ],\n",
       "        [-6.78429511, -5.20930075],\n",
       "        [-6.7755244 , -4.45165911],\n",
       "        [ 7.82126672, -4.70787832],\n",
       "        [-0.02601973,  8.22796249],\n",
       "        [ 8.06433796, -1.82955661],\n",
       "        [-5.642809  , -5.51568794],\n",
       "        [-2.31127379,  8.76575463],\n",
       "        [-2.80814994,  8.27827245],\n",
       "        [10.40987906, -3.00477479],\n",
       "        [ 6.6794415 , -3.25621688],\n",
       "        [ 8.49002388, -1.77784172],\n",
       "        [ 9.96104762, -4.19815414],\n",
       "        [-1.65585533,  7.65837802],\n",
       "        [ 8.92614717, -2.4995499 ],\n",
       "        [-5.99104938, -4.97728071],\n",
       "        [-2.51317516,  8.05867094],\n",
       "        [ 9.31095718, -3.20894064],\n",
       "        [-6.4080963 , -3.66260816],\n",
       "        [ 9.70579801, -2.04903404],\n",
       "        [ 9.05275281, -3.42384714],\n",
       "        [-1.75927419,  6.8617331 ],\n",
       "        [-5.3415004 , -6.02480683],\n",
       "        [ 8.9022113 , -2.97319388],\n",
       "        [-5.40777095, -6.82380243],\n",
       "        [-0.88058217,  8.36564632],\n",
       "        [-1.10690884,  9.49311107],\n",
       "        [-5.37693195, -4.10649163],\n",
       "        [-6.80679621, -4.51090067],\n",
       "        [ 9.4301304 , -2.9295166 ],\n",
       "        [-3.71822056, -4.52679853],\n",
       "        [ 8.36515176, -1.96308377],\n",
       "        [-2.02182018,  8.25029715],\n",
       "        [ 7.3308667 , -3.62356976],\n",
       "        [-2.10776491,  6.53023766],\n",
       "        [10.16784918, -3.73425507],\n",
       "        [-2.63910225,  9.32167541],\n",
       "        [-1.37735637,  7.36742965],\n",
       "        [-0.01197083,  8.20549661],\n",
       "        [-0.59876353,  7.51817073],\n",
       "        [-6.72559933, -4.66615528],\n",
       "        [-5.65075527, -4.28377444],\n",
       "        [-5.20306559, -3.45506741],\n",
       "        [-1.673015  ,  6.25762391],\n",
       "        [ 7.7097032 , -5.52080672],\n",
       "        [ 9.21901235, -4.07155043],\n",
       "        [-2.16996468, 10.03575515],\n",
       "        [ 8.46393717, -4.43275391],\n",
       "        [-6.51194267, -4.04950862],\n",
       "        [ 0.67299612,  9.83025042],\n",
       "        [-6.80927562, -4.82857176],\n",
       "        [-0.1885556 ,  8.76566128],\n",
       "        [-6.52192303, -5.36120165],\n",
       "        [-0.69442143,  8.06370055],\n",
       "        [-3.89043797, -5.99047652],\n",
       "        [-0.16944708,  7.94895401]]),\n",
       " array([[ 0.70746108,  7.48398801],\n",
       "        [-4.00785395, -3.76279132],\n",
       "        [ 9.2778731 , -3.70603287],\n",
       "        [ 8.42659346, -3.0721474 ],\n",
       "        [-6.09334802, -3.40811798],\n",
       "        [-4.79048486, -3.8058963 ],\n",
       "        [ 8.5139793 , -2.17203507],\n",
       "        [-0.54177247,  8.3895544 ],\n",
       "        [ 9.62872058, -4.22748463],\n",
       "        [-1.74376926,  9.35065733],\n",
       "        [ 9.77850391, -4.41140389],\n",
       "        [-4.78817342, -4.78540689],\n",
       "        [ 9.12610038, -3.74180376],\n",
       "        [ 6.86603996, -3.60169341],\n",
       "        [ 0.45101006,  8.24881293],\n",
       "        [-5.46771155, -5.87621284],\n",
       "        [ 9.97639806, -5.58987917],\n",
       "        [-6.02563412, -4.67946262],\n",
       "        [-2.33372212,  8.28918188],\n",
       "        [-5.93656453, -5.25509776]]),\n",
       " array([2, 0, 2, 1, 2, 0, 1, 1, 0, 0, 0, 0, 2, 1, 1, 2, 0, 1, 0, 0, 2, 2,\n",
       "        2, 2, 1, 2, 2, 1, 0, 1, 2, 0, 0, 1, 1, 1, 1, 0, 1, 2, 0, 1, 2, 1,\n",
       "        1, 0, 2, 1, 2, 0, 0, 2, 2, 1, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 2, 2,\n",
       "        2, 0, 1, 1, 0, 1, 2, 0, 2, 0, 2, 0, 2, 0]),\n",
       " array([0, 2, 1, 1, 2, 2, 1, 0, 1, 0, 1, 2, 1, 1, 0, 2, 1, 2, 0, 2]))"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "xtrain, xtest, ytrain, ytest = train_test_split(eigenvalueArray, targetArray, test_size=0.2, random_state=42)\n",
    "xtrain, xtest, ytrain, ytest"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "machineLearn",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
